Mi tarea es hacer inferencias a gran escala a través de Sagemaker Batch Transform.
He estado siguiendo el tutorial: traiga su propio contenedor, https://github.com/aws/amazon-sagemaker-examples/blob/master/advanced_functionity/scikit_bring_your_own/scikit_bring_your_own.ipynb
Me encontré con muchos problemas y los resolví buscando el desbordamiento de pila. Sin embargo, hay un problema que todavía causa problemas.
Cuando ejecuto el mismo código y el mismo conjunto de datos usando 20 instancias EC2 simultáneamente, a veces aparece el error "El contenedor del modelo no pudo responder al ping; asegúrese de que el punto final de /ping esté implementado y responda con un estado HTTP 200", y a veces no lo hago. t.
Lo que encuentro más frustrante es que ya no he hecho nada para /ping (vea el código a continuación)
@app.route("/ping", methods=["GET"]) def ping(): """Determine if the container is working and healthy. In this sample container, we declare it healthy if we can load the model successfully.""" # health = ScoringService.get_model() is not None # You can insert a health check here # status = 200 if health else 404 status = 200 return flask.Response(response="\n", status=status, mimetype="text/csv")¿Cómo podría seguir ocurriendo el error?
Leí algunas publicaciones (por ejemplo, ¿Cómo puedo agregar una verificación de estado a un punto final de Sagemaker? ) que dicen que "la respuesta de ping debería regresar dentro de un tiempo de espera de 2 segundos".
¿Cómo puedo aumentar el tiempo de espera de respuesta de ping? Y en general, ¿qué puedo hacer para evitar que ocurra el error?
Aclaración rápida, la transformación por lotes de SageMaker y la creación de un punto final en tiempo real son dos facetas diferentes. Para [Transformación por lotes], no utiliza un punto final persistente sino que crea un objeto de transformador que puede realizar inferencias en un gran conjunto de datos. Aquí se puede ver un ejemplo del enfoque Bring Your Own con Batch.
Independientemente de lote o en tiempo real, se debe pasar el /ping. Asegúrese de que está cargando su modelo en esta ruta. En general, si su modelo no se carga correctamente, esto lleva a que se emita un error de verificación de estado. Aquí hay otro ejemplo de BYOC , en predictor.py puedes verme cargando el modelo en la ruta /ping.
Por último, ¿no está seguro de lo que quiere decir con 20 instancias simultáneamente? ¿Está respaldando el punto final con un recuento de 20 instancias?